Laptop computers are rapidly growing in importance in today's personal computer marketplace. In the past, a few laptop computers offered a feature known as suspend/resume mode (or simply resume mode). This feature is used to save the exact status of the machine whenever the system is powered down. With the use of a back-up battery, the system maintains the saved status until it is powered-up again. This enables users to resume their work as though power had never been turned off. One example of such a system is the PC/Convertible laptop computer, which was manufactured and sold by International Business Machines Corporation (IBM.RTM.).
Existing laptops which offer resume mode are based on single-tasking microprocessors such as the 8088 microprocessor made and sold by Intel Corporation of Santa Clara, Calif. In these machines, resume mode offers the above-mentioned benefit, but is limited in functionality due to the single-tasking nature of the machines; it isn't really that much work to bring up a single application, and thus resume mode only saves a few keystrokes. With the growing popularity of serious multi-tasking operating systems such as XENIX and OS/2, resume mode takes on more importance.
For example, computer users want a machine which is "customized" for their use. This customization represents the user's applications programs, interacting in a personalized way. Under the single-tasking nature of operating systems such as Disk Operating System available from Microsoft Corporation, this method of operation is primarily restricted to the use of TSRs (Terminate and Stay Resident applications). On the other hand, OS/2 and XENIX make it possible to create an entirely new "personal environment" containing all of a user's favorite programs, all on-line and all immediately available at the touch of a key.
As these operating environments become more graphics-oriented (via X-Windows and OS/2 Presentation Manager, for instance) the resume concept provides a strong metaphor. In particular, setting up a customized program environment is equivalent to arranging a desk with appropriate tools, which is a very natural behavior. In such a customized environment, resume can literally save hundreds of keystrokes: its value quickly becomes apparent.
The prime problem in implementing resume mode in contemporary laptops is existing processor architectures. In this regard, the Intel 80286/386/486 series of processors offer a number of significant capabilities, and foremost among these capabilities is protected mode. Unfortunately, protected mode programs permit unrestricted operation only by the operating system kernel. Conversely, suspend/resume mode implementations need the ability to freely address system input/output and memory in order to save the state of the machine. This conflict implies that it is necessary to build resume mode code into the kernel of every protected mode program which might be "resumed". This clearly is not an adequate solution, because many pre-existing programs which necessarily lack this feature would be incompatible with the resulting machine.
The Intel 8088 processor does not have protected mode capability. Consequently, the approach used in the current 8088-based laptops mentioned above is to assert the non-maskable interrupt (NMI) to gain control of the processor. While this works well on the 8088, in protected mode processors such as the popular 80286/386/486 it would cause a number of problems:
Once the controller has generated an NMI, external logic must identify the occurrence of the NMI vector fetch cycle. This cannot be based on an absolute address, since the loadable interrupt descriptor table register allows virtually any NMI vector location. PA1 Assuming that the NMI cycle can be detected, it is necessary to come up with a suitable execution (service routine) address for the processor. While operating in protected mode, the global and local descriptor table registers essentially make addresses unknowable to the control circuitry. PA1 Even if a valid address is somehow discerned, its protection rights will probably be inappropriate (such as trying to run code from a stack segment). PA1 In addition, the paging circuitry in the 80386 and 80486 effectively scrambles the processor address lines.
Executing useful code within the hypothetical service routine is exceptionally difficult; even simple techniques such as PUSHing the CPU registers onto the stack may be inappropriate, because the stack may not point to valid memory.
It is important to note that these problems are very similar to those encountered by the designer of an in-circuit emulator (ICE). In both systems, it is necessary to interrupt program execution at an arbitrary point in time without affecting the state of the user's "virtual" machine. After gaining control of the target, free access to the system's input/output and memory is required. While ICEs offer this capability, the associated parts count and cost are ridiculously prohibitive for a portable computer.
A further problem with systems based on protected-mode processors is that it is normally not possible to change certain features of the system configuration while running an application program under existing multi-tasking operating systems. One must exit an application program and operating system, make necessary system configuration adjustments, and then re-enter the multi-taking operating system in the application program, which is tedious and time-consuming.
A further consideration is that some operating systems maintain time and date information separate from the time and date information maintained in hardware, and while the hardware will automatically keep its time and date accurate during a suspend, the time and date in the operating system may become static at the point suspend is entered.
A further consideration is that, while the system is in the suspend mode, a user may remove a floppy disk which was present in a floppy disk drive of the system at the time was powered down, and may even replace it with a different disk. When the interrupted application program is resumed at the end of the suspend mode, there is the danger that it will not realize that the original disk has been replaced with a new disk, and attempt to write data to the new disk with the assumption that it is really the original disk, thereby destroying information on the new disk which the user did not wish to lose.
It may be desirable for a battery-operated system to automatically enter suspend mode when the system is not being actively used in order to conserve battery power, but this can be annoying to the user, and is not absolutely necessary where the system is temporarily operating on AC power.
While separate switches can be used to turn system power on and off and to place the system in suspend mode, this adds to the cost of the hardware and presents the risk that the user may inadvertently actuate the power-off button and thus lose the current operational state of the system in a situation where the user basically intends to always enter and leave suspend mode without losing the existing state of the system.
A further consideration is that, when a user loans his system to another user and the latter changes the system configuration, the configuration set by the original user is lost and the original user is thus faced with the tedious task of attempting to restore his configuration when the system is returned to him.
A further problem is that a user may wish to leave his system for a brief period of time without exiting the application program or turning the system off, and yet want to prevent others from using the keyboard (or other input device) to make alterations or to examine information in the computer system.
A further factor is that conventional floppy disk drives often have internal registers which can be written but cannot be read. If such a disk drive is turned off in order to save power during a suspend mode, the contents of the internal register must be restored when the disk drive is turned back on at the end of suspend mode. However, it is not possible to read the register before suspend mode is enter in order to determine its contents. The desire of users to have a computer system which is compatible with pre-exiting disk drives makes it impractical to simply design a new drive in which all the registers are readable.
A further consideration is that it is often desirable to be able to upgrade the firmware in a computer system from time-to-time in order to obtain new features, but sometimes upgraded firmware is compatible only with more recent versions of the hardware. Unfortunately, the current state of the hardware must normally be determined by dissembling the unit and studying a revision code on the circuit board in order to determine whether upgraded firmware will be compatible with the board, which is a tedious and time consuming process.
When implementing suspend mode, maintaining power to the main memory is commonly viewed as necessary in order to avoid losing the current state of the application program which has been temporarily interrupted, but the maximum duration of the suspend interval is less than it might otherwise be as a result of the fact that a battery powering the system will lose power faster when it has to maintain the main memory than when it does not.
An object of the present invention is to provide a system in which loading of a first register by a processor causes a second register to be conformed to the first register in a manner invisible to a program being executed by the processor.